<?php
/**
 * ===============================================
 * 版权所有 2019-2050 青岛铁锤科技有限公司，并保留所有权利。
 * 网站地址: http://www.huaxianling.com
 * ===============================================
 * Author: Wyp
 */

namespace App\Modules\Live\Repositories;


use App\Exceptions\AllValidatorException;
use App\Models\Live;
use App\Modules\Live\Validators\LiveValidator;
use Flower\Core\Repository\Eloquent\BaseRepository;

class LiveRepository extends BaseRepository
{
    public function model()
    {
        return Live::class;
    }

    public function validator()
    {
        return LiveValidator::class;
    }

    /**
     * 创建直播
     * @param $name
     * @param $user_id
     * @param $picture
     * @param $url
     * @param $store_id
     * @param $rtmp
     * @param $flv
     * @return mixed
     */
    public function createLive($name,$user_id,$picture,$url,$store_id,$rtmp,$flv)
    {
        $data = [
            'name' => $name,
            'user_id' => $user_id,
            'picture' => $picture,
            'status' => 1,
            'url' => $url,
            'store_id' => $store_id,
            'rtmp' => $rtmp,
            'flv' => $flv
        ];

        return $this->create($data);
    }


    /**
     * 修改直播间
     * @param $live_id
     * @param $data
     * @return mixed
     * @throws AllValidatorException
     */
    public function editLive($live_id,$data)
    {
        $this->checkExist($live_id);
        return $this->update($data,$live_id);
    }

    /**
     * 在线人数加1
     * @param $live_id
     * @return mixed
     * @throws AllValidatorException
     */
    public function setIncLive($live_id)
    {
        $this->checkExist($live_id);

        $live = $this->find($live_id);

        $live->increment('member_num', 1);

        return $live;
    }

    /**
     * 在线人数减1
     * @param $live_id
     * @return mixed
     * @throws AllValidatorException
     */
    public function setDecLive($live_id)
    {
        $this->checkExist($live_id);

        $live = $this->find($live_id);
        if($live->member_num > 1) {
            $live->decrement('member_num', 1);
        }

        return $live;
    }

    /**
     * 验证直播是否存在
     * @param $live_id
     * @return mixed
     * @throws AllValidatorException
     */
    public function checkExist($live_id)
    {
        $live = $this->find($live_id);

        if(!$live){
            throw new AllValidatorException(['msg' => '直播不存在']);
        }

        return $live;
    }

    /**
     * 获取直播信息
     * @param $live_id
     * @return mixed
     */
    public function getLiveMessage($live_id)
    {
        $live = $this->find($live_id);

        return $live;
    }

    /**
     *获取直播列表
     */
    public function getLiveList()
    {
        $list = $this->model->where(['status'=>1])->orderBy('member_num','desc')->get(['id']);
        return $list;
    }

    /**
     * 获取未关闭直播
     * @param $user_id
     * @return mixed
     */
    public function getLiveId($user_id)
    {
        $list = $this->model->where(['status'=>1,'user_id'=>$user_id])->get(['id']);
        return $list;
    }
}
